import Storage from '@/utils/storage';

const CONTENTTYPE = {
    // JSON
    JSON: 'application/json;charset=UTF-8',
    // FORM
    FORM_URLENCODED: 'application/x-www-form-urlencoded;charset=UTF-8',
      // form-data  upload
    FORM_DATA: 'multipart/form-data;charset=UTF-8',
}

/**
 * 请求拦截
 * @param {Object} http
 */
export const requestInterceptors = () => {
    uni.$uv.http.interceptors.request.use((config) => { // 可使用async await 做异步操作
        console.log('请求参数config...', config.url, Storage.getCache('token'));
        // 给url添加前缀
        config.url = `${config.url}`
        // 初始化请求拦截器时，会执行此方法，此时data为undefined，赋予默认{}
        config.data = config.data || {}
        // 给请求头添加Authorization
        if(Storage.getCache('token')) config.header['Authorization'] = Storage.getCache('token');

        return config
    }, (config) => // 可使用async await 做异步操作
        Promise.reject(config))
}


// 拦截器配置
const httpInterceptor = {
  // 拦截前触发
  invoke(options: UniApp.RequestOptions) {
    // console.log('interceptor', options);
    options.url = `${options.url}`
    // 初始化请求拦截器时，会执行此方法，此时data为undefined，赋予默认{}
    options.data = options.data || {}
    // 请求超时
    options.timeout = 10000 // 10s
    // 给请求头添加Authorization
    options.header = {
      ...options.header,
    }
    // 添加 token 请求头标识
    const token =  Storage.getCache('token')
    if (token) {
      options.header.Authorization = token
    }
    return options
  },
}

export const requestInterceptor = {
  install() {
    // 拦截 request 请求
    uni.addInterceptor('request', httpInterceptor)

    // uni.addInterceptor({
    //     returnValue(args) {
    //         // 只返回 data 字段
    //         console.log('args.....', args);
    //         return args
    //     }
    // })
  },
}